#pragma once

#ifndef __NIEIK_TYPES_H__
#define __NIEIK_TYPES_H__

#include <stdlib.h>
#include <stdio.h>

typedef char				Int8;
typedef short				Int16;
typedef long				Int32;
typedef __int64				Int64;

typedef unsigned char		Byte, Uint8;
typedef unsigned short		Word, Uint16;
typedef unsigned long		Dword, Uint32;
typedef unsigned __int64	Qword, Uint64;
typedef unsigned int		Uint;

typedef float				Float;

template<class T>
struct _Point2
{
	T x, y;
	_Point2(const T &_x, const T &_y) : x(_x), y(_y) {}
};

namespace nieIK
{	
	typedef _Vector3<Float> Vector3;
	typedef _Matrix4x4<Float> Matrix4x4;
	typedef _Quaternion<Float> Quaternion;
	typedef _MatrixMN<Float> MatrixMN;
	typedef _VectorN<Float> VectorN;
	typedef _Line<Float> Line;
	typedef _Point2<Float> Point2;


}

#ifndef NULL
#define	NULL (void*)0
#endif

#endif // __NIEIK_TYPES_H__